import axios from 'axios';
import { notification, Modal } from 'ant-design-vue';
import _ from 'lodash-es';
// 这里是用于设定请求后端时，所用的 Token KEY
// 可以根据自己的需要修改，常见的如 Access-Token，Authorization
// 需要注意的是，请尽量保证使用中横线`-` 来作为分隔符，
// 避免被 nginx 等负载均衡器丢弃了自定义的请求头
export const REQUEST_TOKEN_KEY = 'X-Auth-Token';
// 创建 axios 实例
const request = axios.create({
    // API 请求的默认前缀
    // baseURL: process.env.VUE_APP_API_BASE_URL,
    timeout: 100000, // 请求超时时间
});

// 异常拦截处理器
const errorHandler = error => {
    if (error.response) {
        const {
            data = {},
            status,
            statusText,
        } = error.response;
        // 403 无权限
        if (status === 403) {
          setTimeout(() => {
            window.location.href = import.meta.env.VITE_PLATFORM_BASE_URL;
          }, 500)
        }
        // 401 未登录/未授权
        if (status === 401) {
            notificationMsg();
        }
    }

    return Promise.reject(error);
};

const notificationMsg = _.debounce(() => {
    Modal.confirm({
        title: '提示',
        content: '页面访问超时，请刷新页面！',
        okText: '确定',
        cancelText: '取消',
        onOk() {
           
        },
        onCancel() {},
    });
}, 1000);

// 请求拦截器
const requestHandler = config => {
    // 全局接口新增ldap参数
    if (config.params.ldap === undefined) {
        config.params.ldap = getQueryString('ldap');
    }
    return config;
};
/** 获取url参数 **/
const getQueryString = (name) => {
    let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
    let r = window.location.search.substr(1).match(reg);
    if (r != null) {
        return unescape(r[2]);
    }
    return null;
}

// Add a request interceptor
request.interceptors.request.use(requestHandler, errorHandler);

// 响应拦截器
const responseHandler = response => {
    return response.data;
};

// Add a response interceptor
request.interceptors.response.use(responseHandler, errorHandler);
// export { AxiosResponse };
export default request;
